package xin.marcher.module.quality.service;

import org.springframework.web.multipart.MultipartFile;
import xin.marcher.module.common.core.PageResult;
import xin.marcher.module.quality.domain.dto.ItemQualityControlSurveyTaskDTO;
import xin.marcher.module.quality.domain.dto.ItemQualityControlSurveyTaskResultDO;
import xin.marcher.module.quality.domain.dto.ItemQualityControlSurveyTaskToSellerDTO;
import xin.marcher.module.quality.domain.dto.ItemSurveyTaskDetailDTO;
import xin.marcher.module.quality.domain.request.ItemQualityControlSurveyTaskRequest;
import xin.marcher.module.quality.domain.request.SurveyFormRequest;
import xin.marcher.module.quality.domain.request.SurveyTaskRequest;

import java.util.List;

/**
 *
 */
public interface ItemQualityControlSurveyTaskService {

    /**
     * 获取调查任务列表
     *
     * @param request
     * @return
     */
    List<ItemQualityControlSurveyTaskDTO> surveyTaskList(ItemQualityControlSurveyTaskRequest request);

    /**
     * 调查员认领任务
     *
     * @param request
     * @return
     */
    ItemQualityControlSurveyTaskResultDO claimedSurveyTask(ItemQualityControlSurveyTaskRequest request);

    /**
     * 查询调查任务列表
     *
     * @param request
     * @return
     */
    PageResult<ItemQualityControlSurveyTaskDTO> surveyTaskPage(SurveyTaskRequest request);

    /**
     * 查询调查任务详情
     *
     * @param request
     * @return
     */
    ItemSurveyTaskDetailDTO surveyTaskDetail(SurveyTaskRequest request);

    /**
     * 发送调查单
     *
     * @param request
     * @return
     */
    Boolean sendSurveyForm(SurveyTaskRequest request);

    /**
     * 审核资质证明
     *
     * @param request
     * @return
     */
    Boolean auditQualityMaterials(SurveyTaskRequest request);

    /**
     * 开启/关闭商家提供资质期限
     *
     * @param request
     * @return
     */
    Boolean changeDeadlineStatus(SurveyTaskRequest request);

    /**
     * 变更商家提供资质证明期限
     *
     * @param request
     * @return
     */
    Boolean updateDeadline(SurveyTaskRequest request);

    /**
     * 卖家查询调查单详情
     *
     * @param request
     * @return
     */
    PageResult<ItemQualityControlSurveyTaskToSellerDTO> surveyFormList(SurveyFormRequest request);

    /**
     * 卖家上传资料
     *
     * @param request
     * @param file
     * @return
     */
    Boolean uploadQualityMaterials(SurveyFormRequest request, MultipartFile file);

    /**
     * 调查员下载资料
     *
     * @param request
     * @return
     */
    void downLoadQualityMaterials(SurveyTaskRequest request);
}
